package smallfrench.moteur.biblio.err;

import smallfrench.moteur.biblio.AClasse;
import smallfrench.moteur.biblio.AnnotationMembre;
import smallfrench.moteur.interp.err.RException;

/**
 * Doit survenir suite à des tentatives d’opérations invalides (divisions par
 * zéro, racines carrées d’un nombre négatif, ...)
 * 
 * @author antoine1023
 *
 */
public class ErreurMath extends AException {

	public static final AClasse CLASSE = AClasse.creer(ErreurMath.class);

	/**
	 * Créé une nouvelle exception.<br>
	 * Voir les méthodes statiques de {@link ErreurMath}, contenant des
	 * messages prédéfinis.
	 * @param descr Description de l’erreur.
	 */
	@AnnotationMembre
	public ErreurMath(String descr) {
		super(descr);
	}

	public static RException nouvelleException(String descr) {
		return new RException(new ErreurMath(descr));
	}

	public static RException nouvelleDivisionPar0() {
		return new RException(new ErreurMath(
				"Tentative de division par zéro"));
	}

	public static RException nouvelleModuloPar0() {
		return new RException(new ErreurMath(
				"Tentative de modulo par zéro"));
	}

}
